package io;

import java.io.*;

/**
 * 使用缓冲字符输入流按行读取字符串
 * java.io.BufferedReader
 * 内部默认维护一个8192长的char数组，可以块读文本数据保证读取效率
 * 并且提供了readLine方法可以按行读取字符串
 */
public class BRDemo {
    public static void main(String[] args) throws IOException {
        //将当前源代码输出到控制台上
        FileInputStream fis = new FileInputStream("./src/main/java/io/BRDemo.java");
        InputStreamReader isr = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(isr);
        /*
            String readLine()
            用于读取一行字符串
            内部实现:
            首先第一次调用readLine时，会一次性读取8192(内部数组的长度)个字符
            并存入内部数组中，然后从数组第一个字符开始连续扫描，直到扫描到换行符
            为止，并将换行符之前的内容以一个字符串形式返回(注意:返回的字符串中不含有
            最后的换行符)
            如果扫描的是空行，则直接返回空字符串
            如果读取到了流的末尾则返回值为null
         */
//        String line = br.readLine();
//        System.out.println(line);

        String line;
        while((line = br.readLine())!=null){
            System.out.println(line);
        }
        br.close();
    }
}
